class DateUtil {
    /**
     * 例如:2017-06-28 10:48:46转成date类,
     * 可把- replace成/
     * @param dateString
     * @return Date
     */
    static parserDateString(dateString) {
        if (dateString) {
            let regEx = new RegExp("\\-", "gi");
            let validDateStr = dateString.replace(regEx, "/");
            let milliseconds = Date.parse(validDateStr);
            // return new Date(milliseconds);
            return milliseconds;
        }
    }

    static isAfterDay(dateString) {
        if (dateString) {
            let regEx = new RegExp("\\-", "gi");
            let validDateStr = dateString.replace(regEx, "/");
            let milliseconds = Date.parse(validDateStr);
            let date = new Date();
            let temp = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate()
            // console.log(temp)
            if (milliseconds - Date.parse(temp) >= 24 * 60 * 60 * 1000) {
                return true
            } else {
                return false
            }
        }
    }

    //计算两个日期的时间差  2017-06-28 10:48:46
    static DateDifference(faultDate, completeTime) {
        var stime = this.parserDateString(faultDate);
        var etime = this.parserDateString(completeTime);
        var usedTime = etime - stime;  //两个时间戳相差的毫秒数
        var days = Math.floor(usedTime / (24 * 3600 * 1000));
        //计算出小时数
        var leave1 = usedTime % (24 * 3600 * 1000);    //计算天数后剩余的毫秒数
        var hours = Math.floor(leave1 / (3600 * 1000));
        //计算相差分钟数
        var leave2 = leave1 % (3600 * 1000);        //计算小时数后剩余的毫秒数
        var minutes = Math.floor(leave2 / (60 * 1000));
        var leave3 = leave2 % (60 * 1000);        //计算分钟数后剩余的毫秒数
        var second = Math.floor(leave3 / 1000);
        // var time = days + "天"+hours+"时"+minutes+"分";
        return this.addZero((days * 24 + hours)) + ':' + this.addZero(minutes) + ':' + this.addZero(second);
    }

    //计算与今天的时间差 ,直接传入毫秒数
    static DateDifferenceToday(completeTime) {
        var stime = new Date().getTime();
        var etime = this.parserDateString(completeTime);
        var usedTime = etime - stime;  //两个时间戳相差的毫秒数
        var days = Math.floor(usedTime / (24 * 3600 * 1000));
        //计算出小时数
        var leave1 = usedTime % (24 * 3600 * 1000);    //计算天数后剩余的毫秒数
        var hours = Math.floor(leave1 / (3600 * 1000));
        //计算相差分钟数
        var leave2 = leave1 % (3600 * 1000);        //计算小时数后剩余的毫秒数
        var minutes = Math.floor(leave2 / (60 * 1000));
        var leave3 = leave2 % (60 * 1000);        //计算分钟数后剩余的毫秒数
        var second = Math.floor(leave3 / 1000);
        // var time = days + "天"+hours+"时"+minutes+"分";
        return this.addZero((days * 24 + hours)) + ':' + this.addZero(minutes) + ':' + this.addZero(second);
    }

    static addZero(count) {
        if (count < 10) {
            return '0' + count;
        }
        return count;
    }

    // timestamp时间戳  formater时间格式
    static formatDate(timestamp, formater) {
        let date = new Date();
        date.setTime(parseInt(timestamp));
        formater = (formater != null) ? formater : 'yyyy-MM-dd hh:mm';
        Date.prototype.Format = function (fmt) {
            var o = {
                "M+": this.getMonth() + 1, //月
                "d+": this.getDate(), //日
                "h+": this.getHours(), //小时
                "m+": this.getMinutes(), //分
                "s+": this.getSeconds(), //秒
                "q+": Math.floor((this.getMonth() + 3) / 3), //季度
                "S": this.getMilliseconds() //毫秒
            };

            if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ?
                    (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            }
            return fmt;
        }
        return date.Format(formater);
    }

    static formatTime_1(timestamp) {
        return DateUtil.formatDate(timestamp, "yyyy-MM-dd hh:mm:ss")
    }

    static formatTime_2(timestamp) {
        return DateUtil.formatDate(timestamp, "yyyy-MM-dd")
    }
}

export default DateUtil;